Django建站历程:(三)创建并显示博客的主页导航栏

2018年12月11日 Jerry 8927 2021年1月17日

上篇文章已经实现了弹出一串字符串到我们的博客主页,本篇文章说一下如何将写好的html主页显示到浏览器中。

一、创建我们的HTML主页文件

        一般情况下,html文件放在每个app内的templates文件夹中,新建的app中是没有这个文件夹的,需要我们手动创建,创建后目录如下:

jerrycoding jerrycoding Django建站历程:(三)创建并显示博客的主页导航栏

        我们可以直接在templates文件夹中创建我们的index.html,默认配置下,Django的模板系统会自动寻找app下面的templates文件夹中的html文件。

        这样搞看似简单,但是会有个问题,假设我有两个app名称分别为APP1、APP2,两个APP中都有templates文件夹和一个叫index的html文件,那Django寻找模板文件时就会犯迷糊了,到底哪个是你想要的呢?当然他不会想这么多,他只会使用它找到的第一个index.html。

        如何解决呢?简单!在templates再创建一个app_name的文件夹,这样我们就可以分别访问“app1/index.html”和“app2/index.html”来区分模板文件。

        按照以上描述创建我们的第一个index.html文件作为博客的主页,先随便写点:

<html>
  <head>My Blog</head>
  <body>
    <h2>你好!世界!这是我的博客的主页!</h2>
  </body>
</html>

        接下来要做的就是修改view.py文件中的index_view函数,在访问主页时,返回我们的index.html文件:

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def index_view(request):
    #return HttpResponse("Hello World! From Jerry Coding")
    return render(request, 'blog/index.html')

jerrycoding jerrycoding Django建站历程:(三)创建并显示博客的主页导航栏

二、使用bootstrap设计主页

        我们直接编写的html文件丑的不行,博主使用了bootstrap来美化界面。这里我们使用的是bootstrap3,相关介绍地址是:Bootstrap3

        从以上介绍网页中我们可以找到一个基本模板代码,不多BB,复制粘贴搞起来!

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
    <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
    <!--[if lt IE 9]>
      <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    <h1>你好,世界!</h1>
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
    <script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
    <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
  </body>
</html>

        再次运行我们的界面,得到如下的界面,呃。。。貌似没啥改善?

jerrycoding jerrycoding Django建站历程:(三)创建并显示博客的主页导航栏

        不要着急,bootstrap3 有各种组件供你使用,这里我们还没用。我们可以在上述地址中找到你想要的组件,直接粘贴到你的body中,就可以轻松实现一个功能组件。

jerrycoding jerrycoding Django建站历程:(三)创建并显示博客的主页导航栏

        接下来,我们找到导航栏组件,添加到我们的博客主页中:

<nav class="navbar navbar-default">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">Brand</a>
    </div>
<!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
        <li><a href="#">Link</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Action</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">Separated link</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">One more separated link</a></li>
          </ul>
        </li>
      </ul>
      <form class="navbar-form navbar-left">
        <div class="form-group">
          <input type="text" class="form-control" placeholder="Search">
        </div>
        <button type="submit" class="btn btn-default">Submit</button>
      </form>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#">Link</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Action</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">Separated link</a></li>
          </ul>
        </li>
      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>

        这样直接粘贴到我们index.html文件中其实就可以得到如下的界面:

jerrycoding jerrycoding Django建站历程:(三)创建并显示博客的主页导航栏

        但是这样我们不断的添加各种组件代码,慢慢的就会让我们的index.html文件越来越臃肿,于是还是把这个导航栏独立出来比较好:单独创建一个nav.html文件,添加导航栏相关代码,再在index文件中include该文件即可 ,index.html文件的body代码如下:

  <body>

    {% include 'blog/nav.html'%}

    <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
    <script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
    <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
  </body>

        这样看起来简洁了很多,顺便进到nav.html文件改成中文的,我们的博客导航栏顺利诞生了!

jerrycoding jerrycoding Django建站历程:(三)创建并显示博客的主页导航栏

        行了这篇文章就到这吧,虽然好像也啥都没讲。。。下篇我们看看用下django-allauth的登陆吧。

(一)服务器的选取与环境准备

(二)创建第一个project和app

(三)创建并显示博客的主页导航栏

(四)django-allauth实现用户登陆

(五)django-allauth实现第三方登陆

(六)使用bootstrap3美化登陆界面

(七)添加用户签名字段

(八)自定义用户头像

(九)发布我的第一篇博客

(十)CKEditor的配置使用

(十一)ajax实现文章添加评论

(十二)signal自动消息通知

(十三)基于django-haystack的全文搜索

(十四)配置SSL证书实现网站HTTPS访问

(十五)免费开启七牛云CDN加速

(十六)particles 粒子背景插件

(十七)集成 xadmin2 后台管理

(十八)RestFramework 编写API

(十九)Nginx+uwsgi 部署 django

(二十)自定义网站404界面

(二一)jwt为API添加身份认证

jerrycoding 博客源码大公开


原创文章,转载请注明出处: https://jerrycoding.com/article/site_building_3

微信
jerry微信赞助
支付宝
jerry支付宝赞助

您尚未登录,暂时无法评论。请先 登录 或者 注册

0 人参与 | 0 条评论